Multi-core processing systems generally utilize hierarchical caches to improve system performance by minimizing accesses to a main memory. A cache coherence protocol may be used to maintain coherency of the data among the hierarchical caches and the main memory. In most instances, when clean data is evicted from a lower level cache to make room for new data, the lower level caches write back the clean data to a higher level cache for future use.